package publics.util;

import javax.xml.registry.infomodel.User;

import org.omg.CORBA.PRIVATE_MEMBER;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

@SuppressWarnings("serial")
public class LevelInterceptor extends AbstractInterceptor {

	/* 对系统的action访问添加权限控制
	 * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
	 */
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		System.out.println("进入权限拦截器···");
		LevelDetail levelDetail = new LevelDetail();
		
		
//		System.out.println("action="+invocation.getAction().toString());
		System.out.println("action="+invocation.getProxy().getActionName());
		String actionName = invocation.getProxy().getActionName();//得到调用的action名字
		
		Object id = invocation.getInvocationContext().getSession().get("id");
		Object user = invocation.getInvocationContext().getSession().get("user");
		Object level = invocation.getInvocationContext().getSession().get("level");
		if(id == null || (Integer)id < 1){
			System.out.println("权限拦截器：无权限访问！id="+id);
			return "loginError";
		}else if(user == null){
			System.out.println("权限拦截器：无权限访问！user="+user);
			return "loginError";//Action.LOGIN;//返回登录Action
		}else if(level == null){
			System.out.println("权限拦截器：无权限访问！level="+level);
			return "loginError";//Action.LOGIN;//返回登录Action
		}else{
			if(level.equals(1)){// 一级权限   未认证
				if(!levelDetail.findRights((Integer)level, actionName)){//没有权限
					System.out.println("权限验证失败，无权进行此操作！");
					return "loginError";
				}
				//在此调用LevelDetail函数，进行权限验证
				
			}else if(level.equals(2)){// 已认证企业
				if(!levelDetail.findRights((Integer)level, actionName)){//没有权限
					System.out.println("权限验证失败，无权进行此操作！");
					return "loginError";
				}
			}else if(level.equals(3)){//客户经理
				if(!levelDetail.findRights((Integer)level, actionName)){//没有权限
					System.out.println("权限验证失败，无权进行此操作！");
					return "loginError";
				}
			}else if(level.equals(4)){//风险经理
				if(!levelDetail.findRights((Integer)level, actionName)){//没有权限
					System.out.println("权限验证失败，无权进行此操作！");
					return "loginError";
				}
			}else if(level.equals(5)){//二审人员
				if(!levelDetail.findRights((Integer)level, actionName)){//没有权限
					System.out.println("权限验证失败，无权进行此操作！");
					return "loginError";
				}
			}else if(level.equals(6)){//终审人员
				if(!levelDetail.findRights((Integer)level, actionName)){//没有权限
					System.out.println("权限验证失败，无权进行此操作！");
					return "loginError";
				}
			}else if(level.equals(7)){//银行系统管理员
				if(!levelDetail.findRights((Integer)level, actionName)){//没有权限
					System.out.println("权限验证失败，无权进行此操作！");
					return "loginError";
				}
			}else if(level.equals(8)){//系统管理员
				if(!levelDetail.findRights((Integer)level, actionName)){//没有权限
					System.out.println("权限验证失败，无权进行此操作！");
					return "loginError";
				}
			}else if(level.equals(9)){//黑名单
				System.out.println("权限为 黑名单，不准登录level="+level+", user="+user);
				return "loginError";//Action.LOGIN;//返回登录Action
			}else{
				System.out.println("权限拦截器：无权限访问！level="+level+", user="+user);
				return "loginError";//Action.LOGIN;//返回登录Action
			}
			
			
			System.out.println("验证成功！继续执行");
			return invocation.invoke();
		}
	}
	
}
